Arduino 使用SIM900 |
您所在的位置:网站首页 › arduino uno软串口有哪些 › Arduino 使用SIM900 |
目录 实验效果凌顺实验室(lingshunlab.com)这次分享通过Arduino Uno 的软串口发送AT指令对SIM900模块实现打电话,仅拨通。如果需要可以语音对话的,请选择购买包含麦克风接口的模块。 熟读查看SIM900的AT指令对于使用此模块非常有用。 https://www.espruino.com/datasheets/SIM900_AT.pdf SIM卡联网不成功,需要多尝试凌顺实验 室(lingshunlab.com)在实际使用中,有时候会提示AT+CREG? 非返回0,1,表示手机SIM卡未能联网,需要多尝试几次,直到指令AT+CREG?返回x,1(主要看第二个数字,为1则代表联网成功,可以打电话或者发短信)。 程序代码 // by lingshunlab.com #include //加载软串口库 // 定义一个软串口 SoftwareSerial DebugSerial(10, 11); // RX = Pin 10, TX = Pin 11 char phoneNumber[] = "***********"; //替换成需要被拨打电话的号码(只需要修改""里的内容) // 读取软串口数据并显示在串口监视器中 void ReadBuffer() { // 当软串口有数据时,在硬串口中显示其信息数据 while(DebugSerial.available()){ Serial.print(char(DebugSerial.read())); } } void setup() { Serial.begin(9600); // 定义硬串口的波特率 DebugSerial.begin(9600); // 定义软串口的波特率 } void loop() { Serial.println("\r\n---------send AT command start---------\r\n"); DebugSerial.write("AT\r\n"); // 软串口发送AT指令 ,若果软串口返回「OK」,则表示模块连接开发板正确,可以互相沟通。 delay(500); // 等待500毫秒,是为了让软串口的数据飞一会(串口有数据会保存在串口的缓存中,当读取则,当然有大小限制会溢出) ReadBuffer(); // 读取软串口数据并显示在串口监视器中 // AT+CPIN // 该指令用于查询 SIM 卡的状态,主要是 PIN 码, // 如果该指令返回+CPIN:READY,则表明 SIM 卡状态正常, // 返回其他值,则有可能是没有 SIM 卡。 DebugSerial.write("AT+CPIN?\r\n"); delay(500); ReadBuffer(); // AT+CREG // 该指令用于查询AT+CREG?查看GSM是否注册成功 // 0,1 // 返回 x,1,最主要后面的1,表示联网成功 DebugSerial.write("AT+CREG?\r\n"); delay(500); ReadBuffer(); // AT+CMGF=1 // 该指令AT+CMGF=1,即可设置为文本模式。 DebugSerial.write("AT+CMGF=1\r\n"); delay(500); ReadBuffer(); // AT+CSCS // 该指令AT+CSCS,用于设置 TE 字符集,默认的为 GSM7 位缺省 字符集, // 在发送纯英文短信的时候,发送: AT+CSCS=“GSM”,设置为缺省字符集即可。 // 在发送中英文短信的时候,需要发送: AT+CSCS=“UCS2”,设置为 16 位通用 8 字节倍数编码字符 集。 DebugSerial.write("AT+CSCS=\"GSM\"\r\n"); delay(500); ReadBuffer(); // 准备开始打电话 Serial.println("Calling...."); char callCMD_buf[20] = {0}; memset(callCMD_buf, 0, 20); // 利用memset()函数的作用,把callCMD_buf里的所有元素定义为0,在这里可以想象像清空一样 strcpy(callCMD_buf, "ATD"); // 开始组合打电话的AT指令,格式为:ATD13000000000; strcat(callCMD_buf, phoneNumber); strcat(callCMD_buf, ";\r\n"); DebugSerial.write(callCMD_buf); // 向软串口发生callCMD_buf指令 delay(60000); // 等待60秒 ReadBuffer(); // 读取软串口返回的数据 Serial.println("Called!"); //拨打结束 while(1); } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |